package com.huxiaohui.ssbx.config;

import com.huxiaohui.ssbx.config.json.JacksonObjectMapper;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

import java.util.List;

@Configuration
public class WebMvcConfiguration extends WebMvcConfigurationSupport {

    /**
     * 扩展Spring MVC框架消息转换器（后端返回给前端的消息处理）
     * @param converters
     */
    @Override
    protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        // 1. 创建消息转换器对象
        MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
        // 2. 给消息转换器对象设置对象转换器对象，对象转换器可以将Java对象序列化为JSON对象
        mappingJackson2HttpMessageConverter.setObjectMapper(new JacksonObjectMapper());
        // 3. 将创建的消息转换器加入到容器（容器中有所有的转换器，默认添加到最后一个，就存在前面的转换器已经转换了，不会再使用这个了）
        converters.add(0, mappingJackson2HttpMessageConverter); // 第一个参数，设置索引，将消息转换器排在第一位，优先使用
    }
}
